Load balancing

ABSTRACT

A technique for associating clients with APs in an advantageous manner may involve local balancing of clients across APs. This may involve providing instructions to APs to disable client association. Alternatively, this technique may involve load balancing across controllers.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application claims priority to U.S. Provisional Patent App.Ser. No. 60/852,179, by Liang-Jong Huang and David Bradburn Aragonentitled “Wireless Load Balancing System and Method” filed on Oct. 16,2006, which is incorporated herein by reference.

BACKGROUND

In 802.11 infrastructure basic service set (BSS) networks, connectionsare initiated from the client side. Many clients may seek to associatewith many APs in a network. In some cases only a few APs receive most ofthe clients. The few APs may be come heavily loaded while many other APsremain under utilized. The underutilization may be spread over multipleAPs associated with a single access area, or may be distributed overmany access areas. Clients may experience poor service from anoverloaded AP while some APs remain relatively underutilized.

The foregoing examples of the related art and limitations relatedtherewith are intended to be illustrative and not exclusive. Otherlimitations of the related art will become apparent to those of skill inthe art upon a reading of the specification and a study of the drawings.

SUMMARY

The following examples and aspects thereof are described and illustratedin conjunction with systems, tools, and methods that are meant to beexemplary and illustrative, not limiting in scope. In some of theexamples one or more of the above-described problems has been reduced oreliminated, while other examples are directed to other improvements.

A technique for associating clients with APs in an advantageous mannermay involve local balancing of clients across APs. This may involveproviding instructions to APs to disable client association procedures.Alternatively, this technique may involve load balancing acrosscontrollers. The technique may calculate overlaps between APs and maydetermine target loads for the APs. Using target loads, APs may beinstructed to steer clients to other APs when target loads are met orexceeded. Communication between multiple controllers may facilitatebalanced loads across a network.

A system based on the technique may include a target load calculator.Target loads may be adjusted dynamically. The system may dynamicallyrebalance client loads on APs, thereby improving overall performance ofthe system.

A method based on the technique may disable association capabilities ofan AP to allow clients to associate with other APs thereby distributingthe load of clients. The method may be used in collaboration withvarious algorithms and create useful applications. A load balancingalgorithm may balance wireless traffic based on certain criteria among agroup of APs. In a non-limiting example, clients may be steered inmultiple bands to a preferred band in a multi-band wireless network.

Consider, for the purposes of example only, a network having two APs,each under the control of separate controllers. There are two clientsseeking to associate with one AP. The two APs overlap sufficiently foreither one of the APs to handle both clients. A target load of oneclient per AP is established for each AP. A first client associates witha first AP. The first AP is instructed to stop associating new clients.The remaining one client then associates with the second AP.Advantageously, the client load of each AP is balanced, and each AP hasan approximately evenly distributed client load.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts a diagram of an example of a system for load balancing.

FIG. 2 depicts a diagram of an example of a system balancing loads fortwo APs.

FIG. 3 depicts a diagram of an example of an AP in communication with aclient.

FIG. 4 depicts a diagram of an example of a system in communication withan AP.

FIG. 5 depicts a flowchart of an example of a method for load balancing.

FIG. 6 depicts a diagram of an example of a system for load balancing.

FIG. 7 depicts a flowchart of an example of a method for steering aclient.

FIG. 8 depicts a diagram of an example a system steering a client from afirst AP to a second AP.

FIG. 9 depicts a flowchart of an example of a method for steering aclient to a different AP.

FIG. 10 depicts a diagram of an example of a device capable of loadbalancing.

DETAILED DESCRIPTION

In the following description, several specific details are presented toprovide a thorough understanding. One skilled in the relevant art willrecognize, however, that the concepts and techniques disclosed hereincan be practiced without one or more of the specific details, or incombination with other components, etc. In other instances, well-knownimplementations or operations are not shown or described in detail toavoid obscuring aspects of various examples disclosed herein.

In 802.11 infrastructure BSS networks, connections are initiated fromthe client side. If there are multiple access points (APs) within rangeof a client, the client selects one for association. Although thecriteria for selecting an AP are embedded in the client and areimplementation-specific, nevertheless clients frequently apply similarstrategies, such as strongest signal strength, and consequently makesimilar selections. There is therefore a tendency for some APs toattract more (or even all) clients than the others in a service area,thwarting an administrator's attempts to improve service by providingmultiple APs to offer more bandwidth.

Load balancing and client steering may be implemented to redistributeclients to multiple APs. Load balancing suggests a method to balance thewireless traffic among APs to meet certain criteria. Client steeringsuggests an approach to induce the client to connect with another AP.Herein, both methods are referred to as “load balancing” and clientsteering is referred to explicitly when a distinction is consideredhelpful for improved understanding of the techniques described.

A technique for client steering involves overseeing a network todetermine which AP allows admittance and which AP disallows admittancebased on certain criteria. A system according to this technique mayinclude multiple controllers and APs in an Electronic Switching System(ESS) network. The controllers oversee the ESS network and determinewhich AP allows admittance and which AP disallows admittance based oncertain criteria. In a non-limiting embodiment, for APs disallowingadmittance, a controller may activate an AP's steering function andadjust a safety valve, if needed, by sending message commands throughthe network. For APs allowing admittance, controllers will deactivatetheir steering functions in a similar manner.

FIG. 1 depicts a diagram 100 of an example of a system for loadbalancing. FIG. 1 includes network 102, controller 104, wireless switch106-1 through wireless switch 106-n (collectively wireless switches106), AP 108-1 through AP 108-n (collectively APs 108s), client load110-1 through client load 110-n (collectively client loads 110), and newclient 112.

In the example of FIG. 1, network 102 couples controller 104 to wirelessswitches 106. The network 102 may be practically any type ofcommunications network, such as, by way of example but not limitation,the Internet or an infrastructure network. The term “Internet” as usedherein refers to a network of networks which uses certain protocols,such as the TCP/IP protocol, and possibly other protocols such as thehypertext transfer protocol (HTTP) for hypertext markup language (HTML)documents that make up the World Wide Web (the web).

In the example of FIG. 1, wireless switches 106 swap topology data andclient information with each other, or other wireless switches in thenetwork. One or more of the wireless switches 106 and the controller 104may be the same unit. Alternatively, the wireless switches 106 may beseparate units from the controller 104, and may receive instructionsfrom the controller 104 via network 102.

In the example of FIG. 1, the APs 108 are hardware units that act as acommunication node by linking wireless mobile stations such as PCs to awired backbone network. The APs 108 may generally broadcast a serviceset identifier (SSID). In an example, the APs 108 connect users to otherusers within the network, and may serve as a point of connection betweenWLAN and a wired network. The APs may have one or more radios. In anon-limiting embodiment, the radios are configured for 802.11 standardtransmissions.

In the example of FIG. 1, the client loads 110 may be any previouslyassociated computing devices capable of WLAN communication. APs may bepart of the client load. In a non-limiting example, an un-tethered AP iscoupled to AP 108-1, and is part of the client load 110-1. Client loadmay simply be the number of client sessions on a radio. However, othermeasures of load may be used. In a non-limiting example, a system mayinclude a bandwidth reservation scheme e.g. for IP telephone clients.There, client load can be a weighted sum where the weights depend on thebandwidth reserved by each client. In another non-limiting example, loadcan be measured reciprocally by measuring the available bandwidth,transmit queue availability, or some other suitable measure of APcapacity remaining, and the sense of the target thresholds adjustedappropriately.

In the example of FIG. 1, the new client 112 may be any computing devicecapable of wireless local area network (WLAN) communication. The client112 is depicted as ready to associate with either AP 108-1 or AP 108-2.Given client loads 110 it may be advantageous to cause either AP 108-1or AP 108-2 to refrain from associating with new client 112 so as tobalance the client loads 110.

FIG. 2 depicts a diagram 200 of an example of a system balancing loadsfor two APs. FIG. 2 includes AP 202, AP 203, local load 204, neighborload 206, neighbor designation engine 208, and load distribution engine208.

In the example of FIG. 2, the AP 202 may be one of two or more APs withwhich a client may associate. AP 202 may have a current load of zero ormore clients. An overloaded AP may have more clients than a specifiedthreshold.

In the example of FIG. 2, the AP 203 is an AP near the AP 202. AP 203may be close enough to AP 202 and the client that the AP 203 mayassociate the client as an alternative AP to the AP 202.

In the example of FIG. 2, the local load 204 may be a database, datastore, file, table, or any known or convenient manner of storing aclient load. The local load may be updated dynamically in associationwith the AP 202 to include recently added clients at AP 202.

In the example of FIG. 2, the neighbor load 206 may also be a database,data store, file, table, or any known or convenient manner of storingdata. The neighbor load may be updated dynamically in association withthe AP 203 to include clients recently added to the AP 203.

In the example of FIG. 2, the neighbor designation engine 208 mayidentify neighbors to an AP that may be suitable for associating withthe client. A client may be steered to neighbor APs if desirable.

In the example of FIG. 2, the load distribution engine 210 may havesteering functionality. For example, the load distribution engine 210may instruct the AP 202 to refrain from associating with a client for aduration of time, or until the AP 202 is instructed to resumeassociating with new clients. Alternatively, the load distributionengine 210 may actively balance loads across adjacent APs bydisassociating clients from currently relatively heavily loaded APs andre-associating the clients with a relatively lightly loaded adjacent AP.

In the example of FIG. 2, in operation, the load of the AP 202 isrecorded in the local load database 204. The load of the AP 203 isrecorded in the neighbor load database 206. The neighbor designationengine 208 identifies the AP 203 as a neighbor of the AP 202 that may beable to associate a new client. More specifically, the neighbordesignation engine identifies a client as being within range of both theAP 202 and the AP 203. The neighbor designation engine 208 knows whichof the APs 202, 203 have a heavier load and provides sufficient data tothe load distribution engine 210 to balance the load. For illustrativepurposes only, it is assumed that the AP 202 receives the load balancinginstructions, rather than the AP 203. The load distribution engine 210instructs the AP 202 to be non-responsive to association requests andother communications from the new client. In this way, the AP 202 ceasesassociating with clients, and the new clients are forced to associate atthe AP 203.

FIG. 3 depicts a diagram 300 of an example of an AP in communicationwith a client. The diagram 300 includes client 302, AP 304, andprocessing engine 308.

In the example of FIG. 3, the client 302 may be any client computingdevice capable of WLAN communication. It is possible that APs allowingadmittance receive a burst of requests for probe, authentication andassociation from clients, and responses to clients have been alreadysent before a controller commands a change of admittance state. Eitherthe associated clients can be later steered by the method mentionedabove, or the admittance policy can be evaluated before granting theassociation request. If the policy shows that the AP has reached thewatermark to shut down the admittance, the AP should decline associationrequests from clients and the controller should activate the AP'ssteering function.

In the example of FIG. 3, the AP 304 includes radio 306, safety valve310, steering engine 312, and optional SSID configuration engine 314. Inthe example of FIG. 3, the radio 306 may be any radio device capable ofWLAN communication. By way of example but not limitation, the radio 306may be capable of 802.11 communication.

In the example of FIG. 3, the safety valve 310 may prevent an AP fromsteering clients for more than a maximum amount of time. The safetyvalve may use a timer or counter to limit the duration of the steeringfunction. Various clients manufactured by different vendors may havetheir own probing, authentication and association patterns.Advantageously, timers may be dynamically adjusted either by thecontrollers or by the AP itself based on certain criteria to meetapplication requirements.

In the example of FIG. 3, the steering engine 312 may cause the AP torefrain from responding to probe requests or authentication requestsuntil the safety valve is open. The AP may also take out the SSIDinformation in beacons. When steering associated clients is desired, ade-authentication with a reason code may first be sent to a client. Thesteering engine 312 may be activated afterwards. Depending on therequirements and the certainty of available APs to steer clients to, thesafety valve may be set to a large value to make the previouslyassociated AP as well as APs disallowing admittance almost invisible tothe client so that the client will associate with another AP, allowingde-authentication. Alternatively, the timer may be set to a low value sothat a client may re-associate with the previously associated AP in thecase there are no suitable APs to associate with other than the firstAP.

In the example of FIG. 3, the optional SSID configuration engine 314 maybe used to create useful applications. The optional SSID configurationengine may work with a load balancing algorithm to balance wirelesstraffic based on certain criteria among a group of APs. The optionalSSID configuration engine may be used to steer clients capable ofmultiple bands to a preferred band in a multi-band wireless network.Alternatively, the SSID configuration engine 314 may be used toselectively provide wireless service to a certain group of clients.

In the example of FIG. 3, in operation, the client transmits proberequests or authentication requests to radio 306, however, processing308 has instructed safety valve 310 to close, and steering engine 312 tosteer all clients to other APs because AP 304 has reached a capacity,and it may be necessary to drive clients to other APs to balance theload on the network. Steering engine 312 causes AP 304 to provide noresponse to probe requests or authentication requests from client 302.Optional SSID configuration engine 314 may completely remove SSIDinformation from beacons so as to preclude n new clients from requestingassociation with radio 306.

FIG. 4 depicts a diagram 400 of an example of a system in communicationwith an AP. FIG. 4 includes AP 402 and processing block 404. In theexample of FIG. 4, the AP 402 may connect users to other users withinthe network, and may serve as a point of connection between WLAN and awired network.

In the example of FIG. 4, the processing block 404 includes data 406,target load generation engine 412, optional neighborhood support 414,and admittance determining engine 416.

In the example of FIG. 4 data 406 includes radio neighbors 408 and radioloads 410. Radio neighbors 408 may be may be a database, data store,file, table, or any known or convenient manner of storing informationabout neighboring radios. The radio neighbors 408 may include entriesfor the received signal strength of one or more radios as received bythe AP 402. Radio loads 410 may be a database, data store, file, table,or any known or convenient manner of storing information. Neighbor load410 may store a number of clients associated with one or moreneighboring radios.

In the example of FIG. 4, target load generation engine 412 may use loadand radio overlap information to compute a target load for each radioconnected to the processing 404. The target load may take intoconsideration a proportion of a radio's actual load that couldpotentially be handled by other (overlapping) radios, and also theproportion of those neighboring radios' loads that could be potentiallyhandled by the radio whose target is being computed.

In the example of FIG. 4, the optional neighborhood support 414 may be asubsystem for recording and reporting transmitters detected by an APradio. The optional neighborhood support 414 may periodically scanchannels other than the channel on which the radio is primarilyoperating. Upon detecting another access point transmitting on eitherits own or another channel, the optional neighborhood support 414 maypass a message to a controller showing the transmitter's media accesscontrol (MAC) address and received signal strength.

The optional neighborhood support 414 may be a part of a device such asa Trapeze Mobility Point AP which allows one transmitter to exhibitmultiple MAC addresses on the air. MAC addresses may assigned withindefined ranges so that the (possibly several) MAC addresses belonging toone transmitter may be correctly ascribed to one transmitter by thecontroller that receives the report.

In the example of FIG. 4, the admittance determination engine 416 maycontrol the AP 402 such as by instructing the AP to cease to admit newclients for a duration of time.

In the example of FIG. 4, in operation, the AP provides received signalstrengths of neighboring radios to radio neighbors 408. Client loads onthe neighboring APs may be provided to radio loads 410. Target loadgeneration engine 412 produces a target load for the AP 402. Optionallyneighborhood support 414 provides information about the loads ofneighborhood APs. Using the information provided by the target loadgeneration engine 412, and optionally the neighborhood support 414, theadmittance determination engine 416 decides whether to instruct AP 402to continue admitting new clients or to refrain from admitting newclients.

FIG. 5 depicts a flowchart 500 of an example of a method for loadbalancing. The method is organized as a sequence of modules in theflowchart 500. However, it should be understood that these and modulesassociated with other methods described herein may be reordered forparallel execution or into different sequences of modules.

In the example of FIG. 5, the flowchart 500 starts at module 502 withproviding a first AP and a second AP in an access area. The first AP andthe second AP may be part of a network connected to a controller. Thecontroller may monitor the loads on the first AP and the second AP andprovide load balancing and other features for the network.

In the example of FIG. 5, the flowchart continues to module 504 withassociating one or more clients at the first AP wherein the plurality ofclients may be referred to as a first load. The associations may berecorded and provided to the controller for monitoring of the load onthe first AP.

In the example of FIG. 5, the flowchart continues to module 506 withdetermining that a second load on the second AP is less than the firstload on the first AP. As the controller monitors the loads on the APs itis connected to the controller may be aware that one or more APs have alower load than the first AP. The controller may dynamically update APloading as the APs associate with additional clients.

In the example of FIG. 5, the flowchart continues to module 508 withsetting a target load threshold at least based on the second load. Indynamically rebalancing the load on the network, the controller may settarget threshold by considering the second load. In a non-limitingexample, the target load may be raised because a number of clients onthe network has increased overall with the additional loading of the newclient.

In the example of FIG. 5, the flowchart continues to module 510 withdisabling association capabilities for additional clients at the firstAP if the first load exceeds the target threshold. In balancing the loadthe controller may prevent the AP from taking on more clients. This willcause the clients to associate with other APs. By causing clients toassociate with under loaded APs, the controller may dynamicallyrebalance the network.

FIG. 6 depicts a diagram 600 of an example of a system for loadbalancing. FIG. 6 includes RF neighbor detector 602, radio neighbors604, messages 606, radio load 608, overlap calculation engine 610,target load calculation engine 612, optional neighborhood support 614,admittance determining engine 616, and admittance gate 618.

In the example of FIG. 6, RF neighbor detector 602 may be a subsystemfor recording and reporting transmitters detected by an AP radio. RFneighbor detector 602 may periodically scan channels other than thechannel on which the radio is primarily operating. Upon detectinganother access point transmitting on either its own or another channel,RF neighbor detector 602 may pass a message to a controller showing thetransmitter's MAC address and received signal strength.

In the example of FIG. 6, radio neighbors 604 may be may be a database,data store, file, table, or any known or convenient manner of storinginformation about neighboring radios. The radio neighbors 604 mayinclude entries for the received signal strength of one or more radiosas received by the AP using RF neighbor detector 602.

In the example of FIG. 6, the messages 606 may be received into theradio neighbors 604 and the radio load 608 from other controllers. Itmay be possible for load balancing to occur across multiple controllers.In that case, it may be necessary for the multiple controllers toprovide messages regarding the loads on various APs. RF data pertainingto an AP that is associated with another controller may be included in amessage that is sent to the controller. Conversely, messages 606 may bereceived into the radio neighbors 604. Messages pertaining to radioneighbors may be termed part of a radio “neighborhood.” The radioneighbors 604 may include messages received from other controllers inthe radio neighborhood. In a non-limiting example, a client is steeredto a local AP, and a message is transmitted and stored into the localradio load because the client was steered to the local AP.

In the example of FIG. 6, the radio load 608 may include informationabout clients connected to APs. The controller may maintain thisinformation for making load balancing decisions such as to steer clientsto nearby APs or to steer clients to APs associated with othercontrollers.

In the example of FIG. 6, the overlap calculation engine 610, mayestimate the conditional probability that a client can be served by agiven radio in a load-balancing scheme, given that it is associated toanother such radio. Overlap may be “inward” if the client could beserved by the given radio but is presently associated to a neighborradio, and as “outward” if the client is associated to the given radiobut could be served by a neighbor.

A client may be deemed able to be served by a radio if that radio'ssignal strength at the client's location exceeds a predeterminedthreshold. In a non-limiting example, the threshold may be set to −65dB.

For target loads to optimally account for all client load in the system,overlap calculations between any two radios may necessarily besymmetric. The inward overlap of a neighbor's coverage area into thecentral radio's coverage area may have the same value as the centralradio's outward overlap calculated at the neighbor radio.

Two radios may be attached to different network controllers, so animportant issue is that inward and outward overlaps be calculatedconsistently from the two perspectives, with minimal requirement to passdata between the controllers. The overlap calculator accomplishes thecalculation using only two measurements, namely, the received signalstrength (RSSI) of each radio as received at the other radio.

The following notation may be used to calculate the overlap:

s_(j@k) denotes the signal measurement of radio j as heard at radio ks_(ref) is the reference signal strength defining the outer limit of aradio's coverage areaL is the path loss exponent (typically assumed to be about 3 inside anoffice building)r_(j) denotes the radius of radio j's coverage aread_(jk) is the distance between radios j and k

The path loss exponent and the reference signal strength may bepredetermined and the same for all radios. The overlap calculation fortwo radios j and k may then require measurement only of the two valuess_(j@k) and s_(k@j). First, the overlap calculator forms twointermediate terms representing the estimated radii of each coveragearea in units of the inter-radio distance:

$\frac{r_{j}}{d_{jk}} = 10^{\frac{S_{j@k} - S_{ref}}{10L}}$ and$\frac{r_{k}}{d_{jk}} = 10^{\frac{S_{k@j} - S_{ref}}{10L}}$

The overlap calculator then detects the limiting conditions where thereis either no overlap, or complete overlap (i.e. one coverage areacompletely contained within the other):

${overlap} = \left\{ \begin{matrix}{0,} & {{\frac{r_{j}}{d_{jk}} + \frac{r_{k}}{d_{jk}}} \leq 1} \\{1,} & {{{\frac{r_{j}}{d_{jk}} - \frac{r_{k}}{d_{jk}}}} > 1}\end{matrix} \right.$

The above equations for overlap define two limits of a range. If wechoose k as the index for the lower signal strength value then theabsolute value signs can be removed and the above limits re-written aslimits on one of the two measured values in terms of the other:

${overlap} = \left\{ \begin{matrix}{0,} & {\frac{r_{j}}{d_{jk}} \leq \left( {1 - \frac{r_{k}}{d_{jk}}} \right)} \\{1,} & {\frac{r_{j}}{d_{jk}}\; > \left( {1 + \frac{r_{k}}{d_{jk}}} \right)}\end{matrix} \right.$

For values of

$\frac{r_{j}}{d_{jk}}$

within the range

$\left( {1 \pm \frac{r_{k}}{d_{jk}\;}} \right),$

the overlap calculation engine 610 interpolates smoothly. The operationof the invention may not be extremely sensitive to the preciseinterpolation function chosen. A function may be derived by trigonometryassuming that the coverage areas are circular. The interpolation mayalso be linear.

The overlap value may be interpreted as a fraction or proportion,expressing the area of overlapping coverage in terms of the smaller ofthe two individual coverage areas. The fraction may provide the outwardoverlap of the smaller area into the larger or equivalently, the inwardoverlap of the larger area into the smaller.

The overlap calculator may compute converse overlaps. A converse overlapmay be an overlap in terms of a larger coverage area. The converseoverlap may be found by multiplying the above-derived overlap value bythe ratio of the two coverage areas, which is the square of the ratio oftheir radii, namely

$\left( \frac{r_{k}/d_{jk}}{r_{j}/d_{jk}} \right)^{2}.$

In the example of FIG. 6, the target load calculation engine 612, maygenerate a load level for each radio in terms of the number of clientsand the number of other radios available to serve those clients. In anon-limiting example, the target load may be calculated as estimatednumber of clients that the given radio can serve, divided by theestimated number of radios able to serve those clients.

In generating target loads, radios generally do not cover identicalranges, and thus cannot be assumed able to serve the same clients. Evenassuming each radio's coverage area to be approximately circular, in arealistic installation both the center locations and the radii of thoseareas will differ; therefore, the overlaps between radio coverage areasmay generally be partial rather than total.

To provide the ability to balance client load in such an environment,the target load calculation for a given radio weights the factors asfollows. The radio is regarded as being in the center of anapproximately circular neighborhood, around which are neighboring APradios each having some degree of overlap with the central radio'scoverage area. Inward overlap may designate an estimated fraction of theneighbor's load that can also be covered by the central radio, andoutward overlap may designate an estimated fraction of the centralradio's client load that is also in the neighbor radio's coverage area.In the numerator of the target load value (of the central radio), eachneighbor radio's client load is weighted by its inward overlap. For thedenominator of the target load value, each neighbor radio may count as 1times the outward overlap.

For the central radio, both the inward and outward overlaps may bedefined as 1.0. For the central radio, a numerator of the target loadaccumulates the client load of the radio. The denominator accumulates acount of 1.0, i.e. the central radio counts as one radio. The targetloads on the several radios may converge to values that together accountfor the entire client load in the system.

In the example of FIG. 6, the optional neighborhood support 614 may be asubsystem for recording and reporting transmitters detected by an APradio. Channels other than a current channel on which the radio isprimarily operating may be scanned. Upon detecting another access pointtransmitting on either its own or another channel, a message may bepassed to a controller showing the transmitter's MAC address andreceived signal strength.

In the example of FIG. 6, the admittance determining engine 616, Theadmittance determining engine 616 may produce an admittance value thatdetermines the action of the admittance gate 618. The admittance valuefor a radio may set the radio's propensity to accept an additionalclient. The admittance value may be calculated by comparing the radio'scurrent load against its target load. In a non-limiting example,admittance may be set to 0 (admit no client) if the radio's load isabove its target load, or to 1 (admit any client) otherwise.

The admittance determining engine may also produce values intermediatebetween 0 and 1, which instruct the admittance gate to admit some (butnot all) potential new clients. Admittance may be accomplished byapplying multiple thresholds to the difference between current load andtarget load, and outputting an appropriate value depending on which ofthe thresholds are exceeded.

In the example of FIG. 6, the admittance gate 618 may control a radio'sresponse to new clients. The admittance gate 618 may be a softwarecomponent within an AP that influences the AP to associate or not toassociate clients. The admittance gate 618 may cause the radio torespond normally to 802.11 probes and 802.11 authentication requestswhen new clients are to be admitted, or to inhibit or delay responseswhen new clients are not to be admitted.

The admittance gate 618 may respond to commands from admittancedetermining engine 616. The commands may include a binary admittancevalue that instructs the radio whether to admit or inhibit new clients.

The admittance gate 618 may also have a rule table for conditioning aresponse based on characteristics of the client. The rule table mayinclude a rule for responding to a client that is already associated tothe radio. In a non-limiting example, the AP is subject to a rule thatrequires that the AP always respond to an already-associated client. Therule table may have an associated function that evaluates a hardwareaddress of a client and causes the client to associate with an APbecause the function falls within a range of values. Using the functionthe AP may quickly determine whether a hardware address is within arange to which the AP should respond.

The rule table may also have other rules. In a non-limiting example asignal strength rule instructs the AP to respond to clients whoserequests exceed a programmed signal strength value, thereby creating apreference for clients that are physically near the AP.

An exemplary rule computes a hash value from a MAC address andassociates a client with a first AP if the hash value is odd or a secondAP if the hash value is even. In applying such a rule, consider two APsthat have overlapping coverage areas. One can be instructed to respondto clients when the output of a MAC hash function is even, and the otherinstructed to respond when the output of the same MAC hash function isodd.

FIG. 7 depicts a flowchart 700 of an example of a method for steering aclient. The method is organized as a sequence of modules in theflowchart 700. However, it should be understood that these and modulesassociated with other methods described herein may be reordered forparallel execution or into different sequences of modules.

In the example of FIG. 7, the flowchart 700 starts at module 702 withreceiving a probe request or an authentication request. Controllersoversee the network and determine which AP allows admittance and whichAP disallows admittance based on certain criteria. For APs disallowingadmittance, controllers may activate their steering functions and adjustsafety valves, if needed, by sending message commands through thenetwork. Advantageously, clients may be steered in response to a proberequest or an authentication request without receiving an associationrequest.

In the example of FIG. 7, the flowchart continues to determinationmodule 704 with deciding: is the client associated? For APs allowingadmittance, controllers will deactivate their steering functions. Thismay allow a client to associate with an AP.

If the result from determination module 704 is yes then the flowchartproceeds to module 714 with process and send response. Having processedand sent the response, the flowchart terminates.

If the result of the determination module 704 is negative, the flowchartproceeds to determination module 706 with testing whether the steeringfunction is enabled. Enabling the steering function may allow executionof module 708, module 710 and module 712. With the steering functionenabled, responses to the client's probe and authentication requests maybe inhibited as in module 712 for a duration that depends on aconfigurable safety valve discussed in reference to module 710.Optionally, enabling the steering function may inhibit the beaconing ofSSID information when an AP is not admitting clients, additionally anydesirable effect of enabling a steering function known or convenient maybe implemented.

If the result of determination module 706 is yes then the flowchartproceeds to module 708 and 710, which together manage a safety valve. Atimer may be used to implement the safety valve to limit the duration ofthe steering function for any particular client. Alternatively, acounter or other means may be used to implement the safety valve.Various clients manufactured by different vendors have their differingprobing, authentication and association patterns, whereby counting theclient-generated events may be an unreliable means of assessing theclient's situation Thus, any manner of implementing a safety valve knownor convenient may be used. The safety valve may be dynamically adjusted,either by the controllers or by the AP itself based on certain criteriato meet application requirements.

If the result of determination module 706 is no then the flowchartproceeds to module 714 with process and send response. Having processedand sent the response, the flowchart terminates.

In the example of FIG. 7, the flowchart proceeds to determination module710 with deciding: is the duration>safety value?

If the result of the determination module 710 is yes then the flowchartproceeds to module 714 with process and send response. Having processedand sent the response, the flowchart terminates.

If the result of the determination module 710 is no then the flowchartproceeds to module 712 with providing no response. Having provided noresponse, the flowchart terminates

FIG. 8 depicts a diagram 800 of an example a system steering a clientfrom a first AP to a second AP. FIG. 8 includes controller 802, network804, AP 806-1, AP 806-2, AP 806-n (collectively APs 806), client 808,and balanced client 810.

In the example of FIG. 8, the controller 802 includes functionally toinstruct an AP to de-authenticate a client, and to prevent the clientfrom re-association to that AP. When steering associated clients isdesired, a de-authentication command may be sent to a client on anoverloaded AP. Because the AP is overloaded it may have its steeringfunction activated. The de-authenticated client may have a tendency toassociate to a different AP, improving the balance of the load on the APby decreasing the number of associated clients. A safety valve timervalue may be set to suit the characteristics of a particular networkinstallation. In a non-limiting example, physical density of accesspoints is high and a de-authenticated client may be very likely to beable to find an alternative AP; thus, the safety valve can be set to avery large value so that the previously associated AP will remaininvisible to the client until after the client has associated elsewhere.Alternatively, in a less dense deployment, the safety valve may be setto a moderate value so that the client may possibly re-associate withthe previously associated AP in case there are no other suitable APswithin range of the client.

It may be possible that APs allowing admittance receive a burst ofrequests for probe, authentication and association from clients, andresponses to clients have been already sent before the controllercommands a change of admittance state. To meet the applicationrequirements, either the associated clients may be later steered, or theadmittance policy may be evaluated before granting the associationrequest. If the policy shows that the AP has reached the watermark toshut down the admittance, the AP may decline association requests fromclients and the controller should activate the AP's steering function.

In the example of FIG. 8, the network 804 may be a wired network, orother known or convenient manner of connecting a controller to APs 806.Network 804 may be an un-tethered network, where APs 806 are notconnected by wires, but instead repeat transmissions via other APs.

In the example of FIG. 8, the APs 806 may be access points capable ofassociating clients and receiving instructions from controller 802.

In the example of FIG. 8, the client 808 may be any computing devicecapable of WLAN communication and may be associated with AP 806-1. Ifclient 808 is to associate with AP 806-1, then AP 806-1 may beunbalanced in terms of its client load.

In the example of FIG. 8, the balanced client 810 may be a clientassociated with the AP 806-2. By preventing client 808 from associatingwith AP 806-1, client 808 may instead associate with AP 806-2 as thebalanced client 810.

In the example of FIG. 8, in operation, the AP 806-1 has exceeded aclient threshold, and client 808 is an associated client of AP 806-1.Controller 802 instructs AP 806-1 to de-authenticate client 808 and tonot re-associate. By doing so, AP 806-2 will gain a client, and thiswill balance the load on AP 806-1. Client 808 is de-authenticated, andproceeds to associate with AP 806-2 as balanced client 810.

FIG. 9 depicts a flowchart 900 of an example of a method for steering aclient to a different AP. The method is organized as a sequence ofmodules in the flowchart 900. However, it should be understood thatthese and modules associated with other methods described herein may bereordered for parallel execution or into different sequences of modules.

In the example of FIG. 9, the flowchart starts at module 902 withdeciding to steer an associated client. The controller may have avariety of reasons for deciding to steer an associated client. Onereason may be to balance a network load. An overloaded AP may have aclient steered to an under-loaded AP thereby balancing the network. Theoverloaded AP may be instructed to deny the client re-association.

In the example of FIG. 9, the flowchart continues to module 904 withsending a de-authentication to the associated client. The client may besimply informed that it will not longer be in communication with the AP,and the client is disconnected.

In the example of FIG. 9, the flowchart continues to module 906 withactivate steering function and reset an AP's steering duration. Inactivating the steering function, the AP ignores any requests from theclient to re-associate. The client is instead forced to associated withanother AP to continue to use the network.

In the example of FIG. 9, the flowchart continues to module 908 withclient associates with another AP in the network. The client is nowassociated with another AP that had a lower load, and could thusaccommodate additional clients. Having associated with another AP in thenetwork, the flowchart terminates.

FIG. 10 depicts a diagram 1000 of an example of a device capable of loadbalancing. The system 1000 may be a conventional computer system thatcan be used as a client computer system, such as a wireless client or aworkstation, or a server computer system. The computer system 1000includes a device 1002, I/O devices 1004, radio 1024, and a displaydevice 1006. The device 1002 includes a processor 1008, a communicationsinterface 1010, memory 1012, display controller 1014, non-volatilestorage 1016, I/O controller 1018, and clock 1020. The device 1002 maybe coupled to or include the I/O devices 1004 display device 1006, andradio 1024.

The device 1002 interfaces to external systems through thecommunications interface 1010, which may include a modem or networkinterface. It will be appreciated that the communications interface 1010can be considered to be part of the system 1000 or a part of the device1002. The communications interface 1010 can be an analog modem, ISDNmodem, cable modem, token ring interface, ethernet interface, wireless802.11 interface, satellite transmission interface (e.g. “direct PC”),or other interfaces for coupling a computer system to other computersystems.

The processor 1008 may be, for example, a conventional microprocessorsuch as an Intel Pentium microprocessor or Motorola power PCmicroprocessor. The memory 1012 is coupled to the processor 1008 by abus 1020. The memory 1012 can be Dynamic Random Access Memory (DRAM) andcan also include Static RAM (SRAM). The bus 1020 couples the processor1008 to the memory 1012, also to the non-volatile storage 1016, to thedisplay controller 1014, and to the I/O controller 1018.

The I/O devices 1004 can include a keyboard, disk drives, printers, ascanner, and other input and output devices, including a mouse or otherpointing device. The display controller 1014 may control in theconventional manner a display on the display device 1006, which can be,for example, a cathode ray tube (CRT) or liquid crystal display (LCD).The display controller 1014 and the I/O controller 1018 can beimplemented with conventional well known technology.

The non-volatile storage 1016 is often a magnetic hard disk, an opticaldisk, or another form of storage for large amounts of data. Some of thisdata is often written, by a direct memory access process, into memory1012 during execution of software in the device 1002. One of skill inthe art will immediately recognize that the terms “machine-readablemedium” or “computer-readable medium” includes any type of storagedevice that is accessible by the processor 1008 and also encompasses acarrier wave that encodes a data signal.

Clock 1020 can be any kind of oscillating circuit creating an electricalsignal with a precise frequency. In a non-limiting example, clock 1020could be a crystal oscillator using the mechanical resonance ofvibrating crystal to generate the electrical signal.

Radio 1024 may be any combination of known or convenient electricalcomponents including by way of example, but not limitation, transistors,capacitors, resistors, multiplexers, wiring, registers, diodes or anyother electrical components known or convenient.

The system 1000 is one example of many possible computer systems whichhave different architectures. For example, personal computers based onan Intel microprocessor often have multiple buses, one of which can bean I/O bus for the peripherals and one that directly connects theprocessor 1008 and the memory 1012 (often referred to as a memory bus).The buses are connected together through bridge components that performany necessary translation due to differing bus protocols.

Network computers are another type of computer system that can be usedin conjunction with the teachings provided herein. Network computers donot usually include a hard disk or other mass storage, and theexecutable programs are loaded from a network connection into the memory1012 for execution by the processor 1008. A Web TV system, which isknown in the art, is also considered to be a computer system, but it maylack some of the features shown in FIG. 10, such as certain input oroutput devices. A typical computer system will usually include at leasta processor, memory, and a bus coupling the memory to the processor.

In addition, the system 1000 is controlled by operating system softwarewhich includes a file management system, such as a disk operatingsystem, which is part of the operating system software. One example ofoperating system software with its associated file management systemsoftware is the family of operating systems known as Windows® fromMicrosoft Corporation of Redmond, Wash., and their associated filemanagement systems. Another example of operating system software withits associated file management system software is the Linux operatingsystem and its associated file management system. The file managementsystem is typically stored in the non-volatile storage 1016 and causesthe processor 1008 to execute the various acts required by the operatingsystem to input and output data and to store data in memory, includingstoring files on the non-volatile storage 1016.

Some portions of the detailed description are presented in terms ofalgorithms and symbolic representations of operations on data bitswithin a computer memory. These algorithmic descriptions andrepresentations are the means used by those skilled in the dataprocessing arts to most effectively convey the substance of their workto others skilled in the art. An algorithm is here, and generally,conceived to be a self-consistent sequence of operations leading to adesired result. The operations are those requiring physicalmanipulations of physical quantities. Usually, though not necessarily,these quantities take the form of electrical or magnetic signals capableof being stored, transferred, combined, compared, and otherwisemanipulated. It has proven convenient at times, principally for reasonsof common usage, to refer to these signals as bits, values, elements,symbols, characters, terms, numbers, or the like.

It should be borne in mind, however, that all of these and similar termsare to be associated with the appropriate physical quantities and aremerely convenient labels applied to these quantities. Unlessspecifically stated otherwise as apparent from the following discussion,it is appreciated that throughout the description, discussions utilizingterms such as “processing” or “computing” or “calculating” or“determining” or “displaying” or the like, refer to the action andprocesses of a computer system, or similar electronic computing device,that manipulates and transforms data represented as physical(electronic) quantities within the computer system's registers andmemories into other data similarly represented as physical quantitieswithin the computer system memories or registers or other suchinformation storage, transmission or display devices.

The present invention, in some embodiments, also relates to apparatusfor performing the operations herein. This apparatus may be speciallyconstructed for the required purposes, or it may comprise a generalpurpose computer selectively activated or reconfigured by a computerprogram stored in the computer. Such a computer program may be stored ina computer readable storage medium, such as, but is not limited to,read-only memories (ROMs), random access memories (RAMs), EPROMs,EEPROMs, magnetic or optical cards, any type of disk including floppydisks, optical disks, CD-ROMs, and magnetic-optical disks, or any typeof media suitable for storing electronic instructions, and each coupledto a computer system bus.

The algorithms and displays presented herein are not inherently relatedto any particular computer or other apparatus. Various general purposesystems may be used with programs in accordance with the teachingsherein, or it may prove convenient to construct more specializedapparatus to perform the required method steps. The required structurefor a variety of these systems will appear from the description below.In addition, the present invention is not described with reference toany particular programming language, and various embodiments may thus beimplemented using a variety of programming languages.

1-17. (canceled)
 18. A method comprising: identifying a first accesspoint (AP) and a second access point (AP) that include an overlappingcoverage area; identifying a client that is located in the overlappingcoverage area, where the client is seeking to associate with an AP;computing, in response to identifying that the client is located in theoverlapping coverage area, a function of a hardware address of theclient; and allowing the client to associate with the first AP when thefunction falls within a particular range of values.
 19. The method ofclaim 18, where computing the function comprises computing a hash valueof a media access control (MAC) address of the client, and where theclient is allowed to associate with the first AP when the hash valuecomprises an odd number.
 20. The method of claim 18, where computing thefunction comprises computing a hash value of the hardware address, andwhere, when the hash value comprises an even number, then the client isallowed to associate with the second AP.
 21. The method of claim 18,further comprising: determining, a signal strength associated with theclient relative to the first AP and a signal strength of the clientrelative to the second AP; and allowing the client to associate with thefirst AP when the signal strength associated with the client relative tothe first AP is greater than the signal strength associated with theclient relative to the second AP.
 22. The method of claim 18, whereallowing the client to associate with the first AP includes:transmitting a binary admittance value to the first AP to instruct thefirst AP to associate with the client.
 23. The method of claim 18,further comprising: determining whether the client is associated withthe first AP based on identifying that the client is located in theoverlapping coverage area; and allowing the client to associate with thefirst AP, without calculating the function of the hardware address, whenthe client is associated with the first AP.
 24. The method of claim 18,where identifying the first AP and the second AP includes: determining afirst received signal strength of the first AP at the second AP,determining a second received signal strength of the second AP at thefirst AP, and identifying the overlapping coverage area based on thefirst received signal strength and the second received signal strength.25. A non-transitory computer-readable medium storing instructions, theinstructions including: one or more instructions, which, when executedby one or more processors, cause the one or more processors to identifya first access point (AP) and a second access point (AP) that include anoverlapping coverage area; one or more instructions, which, whenexecuted by the one or more processors, cause the one or more processorsto identify a client that is located in the overlapping coverage area,where the client is seeking to associate with an AP; one or moreinstructions, which, when executed by the one or more processors, causethe one or more processors to determine a hardware address of theclient; and one or more instructions, which, when executed by the one ormore processors, cause the one or more processors to determine whetherto allow the client to associate with the first AP or the second APbased on the determined hardware address.
 26. The computer-readablemedium of claim 25, where the one or more instructions to determinewhether to allow the client to associate with the first AP or the secondAP include: one or more instructions, which, when executed by the one ormore processors, cause the one or more processors to compute a functionof the hardware address, and one or more instructions, which, whenexecuted by the one or more processors, cause the one or more processorsto allow the client to associate with the first AP when the function ofthe hardware address falls within a range of values.
 27. Thecomputer-readable medium of claim 26, where the one or more instructionsto compute the function of the hardware address include: one or moreinstructions, which, when executed by the one or more processors, causethe one or more processors to compute a hash value of a media accesscontrol (MAC) address of the client, and where the client is allowed toassociate with the first AP when the hash value comprises an odd number.28. The computer-readable medium of claim 26, where the one or moreinstructions to compute the function of the hardware address include:one or more instructions, which, when executed by the one or moreprocessors, cause the one or more processors to compute a hash value ofa media access control (MAC) address of the client, and where the clientis allowed to associate with the second AP when the hash value comprisesan even number.
 29. The computer-readable medium of claim 25, furthercomprising: one or more instructions, which, when executed by the one ormore processors, cause the one or more processors to transmit a binaryadmittance value to the first AP or to the second AP to instruct thefirst AP or the second AP to associate with the client when the clientis allowed to associate with the first AP or the second AP.
 30. Thecomputer-readable medium of claim 25, further comprising: one or moreinstructions, which, when executed by the one or more processors, causethe one or more processors to determine that the client is previouslyassociated with the first AP based on identifying that the client islocated in the overlapping coverage area; and one or more instructions,which, when executed by the one or more processors, cause the one ormore processors to allow the client to associate with the first AP basedon the client being previously associated with the first AP.
 31. Thecomputer-readable medium of claim 25, where the one or more instructionsto identify the first AP and the second AP includes: one or moreinstructions, which, when executed by the one or more processors, causethe one or more processors to determine a first received signal strengthof the first AP at the second AP, one or more instructions, which, whenexecuted by the one or more processors, cause the one or more processorsto determine a second received signal strength of the second AP at thefirst AP, and one or more instructions, which, when executed by the oneor more processors, cause the one or more processors to identify theoverlapping coverage area based on the first received signal strengthand the second received signal strength.
 32. A device comprising: amemory to store instructions; a processor to execute one or more of theinstructions to: identify an overlapping coverage area between a firstaccess point (AP) and a second access point (AP); identify a client thatis located in the overlapping coverage area, where the client is seekingto associate with an AP; determine a hardware address of the client; anddetermine whether to allow the client to associate with the first AP orthe second AP based on the determined hardware address.
 33. The deviceof claim 32, where, when determining whether to allow the client toassociate with the first AP or the second AP, the processor executes theinstructions further to: compute a function of the hardware address, andallow the client to associate with the first AP when the function of thehardware address falls within a range of values.
 34. The device of claim33, where, when computing the function of the hardware address, theprocessor executes the instructions to: compute a hash value of a mediaaccess control (MAC) address of the client, and allow the client toassociate with the first AP when the hash value comprises an odd number.35. The device of claim 33, where, when computing the function of thehardware address, the processor executes the instructions to: compute ahash value of a media access control (MAC) address of the client, andallow the client to associate with the second AP when the hash valuecomprises an even number.
 36. The device of claim 32, where theprocessor executes the instructions further to: transmit a binaryadmittance value to the first AP or to the second AP to instruct thefirst AP or the second AP to associate the client when the client isallowed to associate with the first AP or the second AP.
 37. The deviceof claim 32, where, when identifying the first AP and the second AP, theprocessor further executes the instructions to: determine a firstreceived signal strength of the first AP at the second AP, determine asecond received signal strength of the second AP at the first AP, andidentify the overlapping coverage area based on the first receivedsignal strength and the second received signal strength.